package JDBC.JDBC_API.StatementDemo;

import JDBC.utils.GetConnectionUtils;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class index {
    public static void main(String[] args) throws Exception {
        //Statement（执行SQL语句对象）

        //自定义了一个工具类用来获取连接
        Connection cnt = GetConnectionUtils.getConnection();

        Statement sta = cnt.createStatement();

        //执行DML、DDL语句（executeUpdate）
        //返回值：
        //1、执行DML语句影响的行数
        //2、DDL语句执行后，执行成功也可能返回0

        String sql1 = """
                update account
                set money = 5000
                where name = '张三';
                """;
        int line = sta.executeUpdate(sql1);

        //System.out.println("影响了" + line + "行");
        //数据处理
        //一般显示给用户的是成功或失败
        System.out.println(line > 0 ? "执行成功！" : "执行失败！");


        //执行DQL语句
        //返回值：
        //ResultSet结果集对象
        String sql2 = "select * from account";
        ResultSet results = sta.executeQuery(sql2);
        //System.out.println(results);

        //结果集获取结果

        //next()方法，将光标从当前位置向前移动一行，判断当前行是否为有效行（有数据的行）
        //getXxx()，要查找什么类型的数据就写什么，参数可以有两种
        //1、根据列的编号获取，列的编号，从1开始
        //2、根据列的名称获取

        while (results.next()) {
            int id1 = results.getInt(1);
            int id2 = results.getInt("id");

            String name1 = results.getString(2);
            String name2 = results.getString("name");

            double money1 = results.getDouble(3);
            double money2 = results.getDouble("money");

            System.out.println("id：" + id1 + "  name：" + name1 + "  money：" + money1);
            System.out.println("id：" + id2 + "  name：" + name2 + "  money：" + money2 + "\n");
        }


        //释放资源
        results.close();
        sta.close();
        cnt.close();
    }
}
